#ifndef __WIZ_UTILS_REGEX_SUBEXP_HPP__SHANHAOBO_19800429__
#define __WIZ_UTILS_REGEX_SUBEXP_HPP__SHANHAOBO_19800429__

/// Regular Expression
#include "../../Base/WizBase.hpp"

#include "../../DataType/WizDataTypeRange.hpp"

#include "./WizUtilsRegExpVisitor.hpp"

namespace Wiz
{
    namespace Regex
    {
        namespace SubExp
        {
            class Type
            {
            public:
                Type(){}
                virtual ~Type(){}
            public:
            }; /// end of class Type

            namespace Charset
            {
                class Type : public ::Wiz::DesignPattern::Visitable::Type<
                    ::Wiz::Regex::SubExp::Charset::Type,
                    ::Wiz::Regex::Visitor::Type,
                    ::Wiz::Regex::SubExp::Type>
                {
                    typedef ::Wiz::Range::Set::Type<::Wiz::Char::Type> RangeSetType;
                public:
                    Type()
                    {
                    }
                    virtual ~Type()
                    {
                    }
                protected:
                    RangeSetType m_Range;
                };
            } /// end of namespace Charset
        } /// end of namespace SubExp
    } /// end of namespace Regex
} /// end of namespace Wiz

#endif /*__WIZ_UTILS_REGEX_SUBEXP_HPP__SHANHAOBO_19800429__*/
